package tech.aistar.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import tech.aistar.entity.User;
import tech.aistar.service.IUserService;

import javax.servlet.http.HttpSession;

/**
 * 调用service
 */
@Controller
public class UserController {
    @GetMapping("/user")
    public String user(Model model){
        return "user/user";
    }






    @Autowired
    private IUserService userService;


    /**
     * 返回到登陆的视图界面
     * @return
     */
    @GetMapping("/user/registerView")
    public String registerview(Model model){
        return "user/register";
    }

    @GetMapping("/user/loginView")
    public String loginview(){
        return "user/login";
    }

    @PostMapping("/user/logincl")
    public String logincl(User user, HttpSession session){
        //需要在后台接受到jsp页面表单中到数据

        //调用service的login方法
        User u = userService.login(user.getUsername());

        //进行各种判断
        if(null!=u){
            //用户是存在的
            if(u.getPassword().equals(user.getPassword())){
                //System.out.println("登陆成功！");

                //将登陆成功的用户放入到session作用域中
                session.setAttribute("userLogin",u);

                //新增，删除，修改 - 推荐使用重定向
                //如何防止表单进行二次提交

                return "redirect:/index";
            }else{

                //控制层转发到控制层
                return "redirect:/user/loginView?error=1";
            }

        }else{
            //用户不存在
            return "redirect:/user/loginView?error=0";

        }
    }



    @PostMapping("/user/registercl")
    public String registercl(User user, HttpSession session){
        //需要在后台接受到jsp页面表单中到数据

        //调用service的login方法
        User u = userService.login(user.getUsername());

        //进行各种判断
        if(null!=u){
            //用户是存在的
            return "redirect:/user/registerView?error=1";

        }else{
            userService.save(user);
            return "redirect:/user/loginView";
        }
    }





    /**
     * 安全退出 - 清空session
     * @param session
     * @return
     */
    @GetMapping("/user/exit")
    public String exit(HttpSession session){
        //重定向是不能够直接重定向到jsp页面的。

        //清空session
        session.invalidate();

        return "redirect:/user/loginView";
    }
}
